﻿
Imports BusinessLogicLayer
Imports BE = BusinessEntities
Imports System.Data

Partial Class Encuestas_Encuestarediseño11
    Inherits System.Web.UI.Page
    Public Shared parametroenviado As String
    Dim errores As String
    Dim mensaje As String
    Dim itemgridview As GridViewRow
    Dim rabuli As System.Web.UI.WebControls.RadioButtonList
    Dim opcion As String
    Dim correlativo As System.Web.UI.WebControls.Label

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Session("ENCUESTA") = Request.QueryString("id")
        If Not Page.IsPostBack Then
            EnlazarPreguntas()
        End If
    End Sub

    Sub EnlazarPreguntas()
        parametroenviado = Request.QueryString("id")

        'Instanciamos la clase
        Dim capanegocios As New ResultadoBL
        Dim objeto As New BE.ResultadoBE

        'llenamos  las  propiedades
        objeto.codigoencuesta = parametroenviado
        
        If capanegocios.ListarPreguntasxEncuesta(objeto).Tables("PreguntasxEncuesta").Rows.Count > 0 Then
            lblencuesta.Text = capanegocios.ListarPreguntasxEncuesta(objeto).Tables("PreguntasxEncuesta").Rows(0).Item(1)
            gvpreguntas.DataSource = capanegocios.ListarPreguntasxEncuesta(objeto)
            gvpreguntas.DataBind()
            'Pintamos el número correlativo de las preguntas
            Dim contador As Integer = 0
            For Each itemgridview In gvpreguntas.Rows
                correlativo = itemgridview.FindControl("lblnumero")
                contador += 1
                correlativo.Text = CStr(contador)
            Next
        Else
            gvpreguntas.Visible = False
            lblencuesta.Text = "En este momento no existen preguntas para esta encuesta"
        End If
        'Liberamos recursos
        capanegocios = Nothing
    End Sub
    Public Function ObtenerOpciones(ByVal encuesta As String, ByVal pregunta As String) As DataView
        'Instanciamos la clase ResultadoBL
        Dim capanegocios As New ResultadoBL
        'Instancias la entidad ResultadoBE
        Dim objeto As New BE.ResultadoBE

        'Llenas las propiedades

        objeto.codigoencuesta = encuesta
        objeto.codigopregunta = pregunta

        Return capanegocios.ListarOpcionesxPreguntayEncuesta(objeto).Tables("OpcionesxPreguntayEncuesta").DefaultView

        'Liberamos recursos
        capanegocios = Nothing
        objeto = Nothing


    End Function


    Protected Sub btnvotar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnvotar.Click

        lblresultado.Text = ""
        'Validamos que se responda al menos una pregunta de la encuesta 
        Dim contador As Integer = 0
        For Each Me.itemgridview In gvpreguntas.Rows
            rabuli = itemgridview.FindControl("rbl")
            If rabuli.SelectedIndex <> -1 Then
                contador += 1
            End If
        Next
        If contador < 1 Then
            lblresultado.Text = "Debe responder al menos una pregunta"
            Exit Sub
        End If

        'Instanciamos la clase lpii
        Dim capanegociosLpII As New lpii

        'Instanciamos la clase ResultadoBL, ResultadoBE y llenamos  sus  propiedades
        Dim capanegocios As New ResultadoBL
        Dim objeto As New BE.ResultadoBE
        objeto.codigoencuesta = parametroenviado

        'Recuperamos datos básicos del cliente, hacemos una referencia a la clase y llenamos  sus  propiedades
        Dim capanegociosCliente As New ClienteBL
        Dim cliente As New BE.ClienteBE
        cliente.codigo = Session("CLIENTE")

        'Instanciamos la clase PreguntaBE
        Dim objetoPregunta As New BE.PreguntaBE


        'Validamos si no esxisten preguntas  en la Encuesta
        If gvpreguntas.Rows.Count < 1 Then
            lblresultado.Text = "No existen preguntas para la encuesta " + capanegocios.ListarPreguntasxEncuesta(objeto).Tables("PreguntasxEncuesta").Rows(0).Item(1)
            Exit Sub
        End If

        'Recorremos cada fila del gridview
        For Each Me.itemgridview In gvpreguntas.Rows
            'contador += 1
            rabuli = itemgridview.FindControl("rbl")
            objeto.user = cliente.codigo
            objeto.codigopregunta = CType(itemgridview.FindControl("lblcodigopregunta"), Label).Text
            objetoPregunta.tenorpregunta = CType(itemgridview.FindControl("lbltextopregunta"), Label).Text

            'Averiguamos si el usuario ya eligió esta pregunta en esta encuesta
            If capanegociosLpII.Validar(objeto.user, objeto.codigoencuesta, objeto.codigopregunta) = False Then
                lblresultado.Text += "Usted ya respondió la pregunta: " + objetoPregunta.tenorpregunta + "<br>"
            Else
                If rabuli.SelectedIndex = -1 Then
                    'No hacemos nada
                Else
                    objeto.codigoopcion = rabuli.SelectedItem.Value
                    If capanegocios.Votar(objeto) = True Then
                        lblresultado.Text = "Su voto ha sido procesado"

                        Dim fila As DataRow
                        fila = CType(Session("dt"), DataTable).NewRow
                        fila(0) = objeto.user
                        fila(1) = objeto.codigoencuesta
                        fila(2) = objeto.codigopregunta
                        CType(Session("dt"), DataTable).Rows.Add(fila)

                    Else
                        lblresultado.Text = "Su voto no pudo ser procesado"
                    End If
                End If


            End If

        Next
        'Liberamos recursos
        capanegocios = Nothing


    End Sub


    Protected Sub lbresultados_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbresultados.Click
        Response.Redirect("Encuestarediseño22.aspx")
    End Sub
End Class

